(incrementally) more C++ internals in magproto. Gets rid of a few explict
authorrobertlipe <robertlipe@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Sun, 28 Sep 2014 23:49:54 +0000 (23:49 +0000)
committerrobertlipe <robertlipe@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Sun, 28 Sep 2014 23:49:54 +0000 (23:49 +0000)
xstrdups.

gpsbabel/magproto.cc

index 6e88d016e4734ec22b19b3c2d667ea252d9332ba..33606d98cf93ffe391909be41b5642c86b23e11c 100644 (file)
@@ -84,11 +84,15 @@ typedef enum {
 /*
  *   An individual element of a route.
  */
-typedef struct mag_rte_elem {
+class mag_rte_elem {
+ public:
+  mag_rte_elem() {
+    QUEUE_INIT(&Q);
+  }
   queue Q;                     /* My link pointers */
-  char* wpt_name;
-  char* wpt_icon;
-} mag_rte_elem;
+  QString wpt_name;
+  QString wpt_icon;
+};
 
 /*
  *  A header of a route.  Related elements of a route belong to this.
@@ -1038,7 +1042,6 @@ mag_rteparse(char* rtemsg)
   char xbuf[100],next_stop[100],abuf[100];
   char* currtemsg;
   static mag_rte_head* mag_rte_head;
-  mag_rte_elem* rte_elem;
   char* p;
   char* rte_name = NULL;
 
@@ -1096,11 +1099,10 @@ mag_rteparse(char* rtemsg)
       *p = '\0';
     }
 
-    rte_elem = (mag_rte_elem*) xcalloc(sizeof(*rte_elem),1);
-    QUEUE_INIT(&rte_elem->Q);
+    mag_rte_elem* rte_elem = new mag_rte_elem;
 
-    rte_elem->wpt_name = xstrdup(next_stop);
-    rte_elem->wpt_icon = xstrdup(abuf);
+    rte_elem->wpt_name = next_stop;
+    rte_elem->wpt_icon = abuf;
 
     ENQUEUE_TAIL(&mag_rte_head->Q, &rte_elem->Q);
 
@@ -1110,9 +1112,8 @@ mag_rteparse(char* rtemsg)
      * routepoint.
      */
     if (broken_sportrak && abuf[0]) {
-      rte_elem = (mag_rte_elem*) xcalloc(sizeof(*rte_elem),1);
-      QUEUE_INIT(&rte_elem->Q);
-      rte_elem->wpt_name = (abuf);
+      rte_elem = new mag_rte_elem;
+      rte_elem->wpt_name = abuf;
 
       ENQUEUE_TAIL(&mag_rte_head->Q, &rte_elem->Q);
     }
@@ -1158,8 +1159,6 @@ mag_rteparse(char* rtemsg)
       }
 
       dequeue(&re->Q);
-      xfree(re->wpt_name);
-      xfree(re->wpt_icon);
       xfree(re);
     }
     xfree(mag_rte_head);